package chapter09.collection;

import java.time.LocalDate;
import java.util.PriorityQueue;

/**
 * 优先队列的学习
 * 默认小根堆
 * 修改成大根堆
 * 插入历史上计算机的贡献者
 *
 * @author insight
 * @since 2021/1/26
 */
public class Test04_PriorityQueue {
    public static void main(String[] args) {
        var pq = new PriorityQueue<LocalDate>((a, b) -> (b.compareTo(a)));

        //书上一堆人名 应该是致敬前辈
        //G. Hopper
        pq.add(LocalDate.of(1906, 12, 9));
        /*
        A. Lovelace 这个我认识
        19世纪诗人拜伦的女儿，数学家。
        穿孔机程序创始人，建立了循环和子程序概念。
        为计算程序拟定“算法”，写作的第一份“程序设计流程图”，
        被珍视为“第一个给计算机写程序的人”。
        */
        pq.add(LocalDate.of(1815, 12, 10));
        //J. von Neuman 冯诺依曼
        pq.add(LocalDate.of(1903, 12, 3));
        //K. Zuse
        pq.add(LocalDate.of(1910, 6, 22));

        //迭代不是按照有序或添加顺序
        //出队 每次删除最小的
        System.out.println("遍历优先队列:");
        for (LocalDate localDate : pq) {
            System.out.print(localDate + " ");
        }
        System.out.println();

        System.out.println("元素出队:");
        while (!pq.isEmpty()) {
            System.out.print(pq.remove() + " ");
        }
    }
}
